package com.me.study.event;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

/**
 * Spring 事件驱动: 容器初始化完成 事件的监听
 *
 * @author ME
 * @date   2019/12/22
 */
@Component
public class ContextRefreshedEventListener implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        // System.out.println(event.getSource());// 发布事件时任意自己想传递的值
        // System.out.println(event.getTimestamp());// 发布事件时的时间戳

		// web项目中，存在 servlet子容器，因此会触发两次，先初始化父容器，后 servlet子容器
		if (event.getApplicationContext().getParent() == null) {
			System.out.println("【Spring】 Event(ContextRefreshedEvent): 父容器(service、dao、DataSource)初始化完成, 现在该干啥好?");
		}
		else {
			System.out.println("【Spring】 Event(ContextRefreshedEvent): servlet子容器初始化完成。。。");
		}
    }
}
